package com.girant.logger.entity.vo.form;
import com.girant.web.annotation.DateFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.time.LocalDateTime;

//异常日志Excel导出（出参）
@Data
public class ErrorLogFormExportVO {
        //服务名称
        @Schema(description = "服务名称代码 使用字典key做查询条件：sysLogServerName", nullable = true)
        private String serverName; // 服务名称（模糊匹配）

        //关键字查询
        @Schema(description = "关键字查询：匹配错误信息、异常堆栈信息、操作人昵称、浏览器、浏览器版本、参数", nullable = true)
        @Size(max = 100, message = "关键字长度不能超过100字符")
        private String keyword; // 关键字（匹配错误信息、异常堆栈信息）

        //分布式追踪ID
        @Schema(description = "分布式追踪ID", nullable = true)
        private String traceId;

        // 分布式跨度ID
        @Schema(description = "分布式跨度ID",nullable = true)
        private String spanId;

        // 操作开始时间字符串
        @Schema(description = "操作开始时间（格式：yyyy-MM-dd HH:mm）" ,requiredMode = Schema.RequiredMode.REQUIRED)
        private String operationStartTime; // 时间精度提升到时分秒（原LocalDate只能到日期）

        // 操作结束时间字符串
        @Schema(description = "操作结束时间（格式：yyyy-MM-dd HH:mm）",requiredMode = Schema.RequiredMode.REQUIRED)
        private String operationEndTime;   // 时间精度提升到时分秒

        @Schema(hidden = true)
        @DateFormat(pattern = "yyyy-MM-dd HH:mm")
        private LocalDateTime operationStartTimeLd;
        /**
         * 后端转换用：操作结束时间（LocalDateTime类型)
         */
        @Schema(hidden = true)
        @DateFormat(pattern = "yyyy-MM-dd HH:mm",second = 59 )
        private LocalDateTime operationEndTimeLd;

        //访问源IP
        @Schema(description = "访问源IP", nullable = true)
        private String sourceIp;

    }

